This invention relates to data over cable transmission and, more particularly, to a method and apparatus for generating requests to transmit data packets upstream from a cable modem to a cable headend.
To coordinate upstream data transmission from a number of cable modems to a headend in a cable transmission system so there is no collision among a number of cable modems using the same channel, the cable modems send request messages to the headend that tell the headend the amount of bandwidth needed to transmit the data. The bandwidth expressed in minislots is sometimes referred to as the physical length (PHY L) of the data to be transmitted. The PHY L required to transmit a data packet having a given byte length (BL) varies depending upon the overhead imposed by the physical layer of the cable system, such as the preamble, guard band, forward error correction, and padding. The parameters that determine the overhead are part of a burst profile transmitted to each cable modem through uniform channel descriptor (UCD) messages. When a request to transmit data is made by a modem, the BL of the data packet to be transmitted is converted to the PHY L by calculations based on a formula including the parameters. When a grant message is returned to the requesting modem, it tells the requesting modem which minislots to use for upstream transmission of the data packet.
If the cable transmission system is capable of fragmented data transmission, i.e., transmitting a data packet in two or more fragments, the grant message sent from the headend to the requesting cable modem includes the PHY L of the data segment to be transmitted in the allotted bandwidth. Before transmitting this data fragment, its PHY L must be converted to a BL value. This conversion is also made by calculations based on the formula including the parameters.
According to the invention, requests are generated to transmit data packets upstream from a cable modem to a cable headend in a manner that minimizes the use of CPU operations and/or memory capacity. Data packets to be transmitted upstream are stored at the cable modem. The data packets each have a given transmission byte length value. Successive burst profiles are received from time to time at the cable modem. Each time a new burst profile is received, a set of physical data length values corresponding to respective transmission byte length values is calculated from the parameters of the received burst profile. The calculated set of physical data length values is stored in memory so the individual physical data length values can be retrieved from the transmission byte length values again and again, rather than being re-calculated each time a conversion is made from transmission byte length values to physical data length values. The same set of physical data length values is used until a new burst profile is received by the cable modem.
Preferably, the calculated set of physical data length values is stored in a forward lookup table so the respective transmission byte length values represent the addresses to the physical data length values in the forward lookup table and the data length conversion can be accomplished by simply addressing the forward lookup table.
If data packets are transmitted in fragmented form, a calculated set of transmission byte length values is preferably stored in a reverse lookup table so respective physical data length values represent the addresses to the transmission byte length values in the reverse lookup table and the transmission byte length conversion can be accomplished by simply addressing the reverse lookup table. In this case, the physical data length conversion can either be carried out with a forward lookup table or an iterative search of the reverse lookup table that compares retrieved transmission byte values with the desired value in order to find the physical data length.